import { Navigate, useLocation } from 'react-router-dom';
import { ReactNode } from 'react';

interface PrivateRouteProps {
    children: ReactNode;
}

/**
 * 私有路由组件，用于保护需要登录才能访问的路由
 * 如果用户未登录，将重定向到登录页面
 */
const PrivateRoute = ({ children }: PrivateRouteProps) => {
    const location = useLocation();
    const token = localStorage.getItem('token');

    // 如果没有token，重定向到登录页面
    if (!token) {
        // 将当前路径保存在state中，以便登录后可以重定向回来
        return <Navigate to="/login" state={{ from: location.pathname }} replace />;
    }

    return <>{children}</>;
};

export default PrivateRoute;
